using Core.SimpleTemp.Common;
using Core.SimpleTemp.Common.PagingQuery;
using Core.SimpleTemp.Entitys;
using Core.SimpleTemp.Repositories;
using Core.SimpleTemp.Repositories.Sys;
using Core.Toolkit.Common;
using Core.Toolkit.Core;
using Core.Toolkit.Core.Api;
using Core.Toolkit.Core.Application;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Core.SimpleTemp.Application
{
    [AutoDi()]
    public class PX_SignDetailService : BaseAppService<PX_SignDetailDto, PX_SignDetail, PX_SignDetailRepository>
    {
        readonly ExcelHelp _excelHelp;
        public PX_SignDetailService(PX_SignDetailRepository repository, ExcelHelp excelHelp) : base(repository)
        {
            _excelHelp = excelHelp;
        }



        private LoadPageOffsetModelAuto<PX_SignDetail, PX_SignDetailDto>
            GetLoadPageOffsetMode(PagingModel<PX_SignDetailDto>
                pagingQueryModel)
        {
            var loadPageOffsetModel = this.GetLoadPageOffsetModelAuto(pagingQueryModel);
            var baseQuery = _repository.QueryBase().AsNoTracking();
            loadPageOffsetModel.QueryWhere = this.CreateQRList()

     .Add("SignID", "=") //
     .Add("DeptID", "=") //
     .Add("UserID", "=") //
     .Add("SignTime", "=") //
     .Add("Remark", "=");//


            loadPageOffsetModel.BasqQuery = baseQuery;
            loadPageOffsetModel.Order = orderModel => orderModel.CreateTime;
            loadPageOffsetModel.Selector = model => new PX_SignDetail()
            {
                Id = model.Id,
                SignID = model.SignID,//
                DeptID = model.DeptID,//
                UserID = model.UserID,//
                SignTime = model.SignTime,//
                Remark = model.Remark,//
            };
            return loadPageOffsetModel;
        }


        public async Task<IPageModel<PX_SignDetailDto>> GetList(PagingModel<PX_SignDetailDto>
            pagingQueryModel)
        {
            var loadPageOffsetModel = GetLoadPageOffsetMode(pagingQueryModel);
            return await base.LoadPageOffsetAsync(loadPageOffsetModel);
        }


        public async Task<string>
            Export(PagingModel<PX_SignDetailDto>
                pagingQueryModel)
        {
            var loadPageOffsetModel = GetLoadPageOffsetMode(pagingQueryModel);
            var DataList = await this.ExportDataAsync(loadPageOffsetModel);
            var excelData = DataList.Select(model => new
            {
                model.SignID,
                SignID_title = "",
                model.DeptID,
                DeptID_title = "",
                model.UserID,
                UserID_title = "",
                model.SignTime,
                SignTime_title = "",
                model.Remark,
                Remark_title = "",
            }).ToList();




            return _excelHelp.Create(excelData);
        }

    }

}
